/***********************************************************************
 * Module:  AliPayUnifiedOrder.java
 * Author:  SAGE-GENERATOR
 * Purpose: DDD: domain 领域层,实体(Entities)：具有唯一标识的对象
 ***********************************************************************/

package com.oweight.sagacious.payment.domain.model;

import lombok.Data;

import java.io.Serializable;

/**
 * 支付宝统一下单：实体
 *
 * @author SAGE
 * @version v1 2019-11-15 11:48:09
 */
@Data
public class AliPayUnifiedOrder implements Serializable {
    private static final long serialVersionUID = 106880942980183520L;

    /**
     * 授权码
     * <p>
     * 商户扫码支付时必填
     */
    private String authCode;

    /**
     * 对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body。
     * <p>
     * 是否必填：是
     */
    private String body;

    /**
     * 商户网站唯一订单号
     * <p>
     * 是否必填：是
     */
    private String outTradeNo;

    /**
     * 商品的标题/交易标题/订单标题/订单关键字等。
     * <p>
     * 是否必填：是
     */
    private String subject;

    /**
     * 订单总金额，单位为元，精确到小数点后两位，取值范围[0.01,100000000]
     * <p>
     * 是否必填：是
     */
    private String totalAmount;

    /**
     * 支付完成后的异步通知地址.
     */
    private String notifyUrl;

    /**
     * 支付完成后的同步返回地址.
     */
    private String returnUrl;

    /**
     * 支付宝：销售产品码
     * <p>
     * 1.电脑网站支付产品：FAST_INSTANT_TRADE_PAY
     * 2.手机网站支付产品：QUICK_WAP_WAY
     * 3.当面付条码支付产品：FACE_TO_FACE_PAYMENT
     * 4.APP支付产品：QUICK_MSECURITY_PAY
     * <p>
     * 是否必填：是
     */
    private String productCode;

    public AliPayUnifiedOrder(String body, String outTradeNo, String subject, String totalAmount,
                              String notifyUrl, String returnUrl, String productCode) {
        this.body = body;
        this.outTradeNo = outTradeNo;
        this.subject = subject;
        this.totalAmount = totalAmount;
        this.notifyUrl = notifyUrl;
        this.returnUrl = returnUrl;
        this.productCode = productCode;
    }
}
